﻿Imports MySql.Data.MySqlClient

Public Class frmCadAluno
    ' Conexão
    Dim SCE As New MySqlConnection(My.Settings.SCE_ETEC_ConnectionString)
    Dim sql As String = String.Empty

    ' Classes
    Dim lista_cidades As IList(Of Cidades)
    Dim lista_bairros As IList(Of Bairros)
    Dim lista_enderecos As IList(Of Endereços)

    ' Posições
    Dim Posicao_Cidade As Integer
    Dim Posicao_Bairro As Integer

    Private Sub frmCadAluno_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        cmbEstado.SelectedIndex = 0
        LimparCampo()
        'txtNome.CharacterCasing = CharacterCasing.Upper
        'txtNomeRes.CharacterCasing = CharacterCasing.Upper
        'txtEndereco.CharacterCasing = CharacterCasing.Upper
        'txtEnderecoRes.CharacterCasing = CharacterCasing.Upper
    End Sub

    Private Sub tsbSalvar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsbSalvar.Click
        'Try
        Dim con As New MySqlConnection(My.Settings.SCE_ETEC_ConnectionString)
        Dim cmd As New MySqlCommand("select * from login where usuario='GUSTAVO'", con)
        con.Open()
        'cmd.CommandText = True

        con.Close()
        ' If gbResponsavel.Enabled = True Then
        'If txtNomeRes.Text = "" OrElse txtRGRes.Text = "" OrElse txtEnderecoRes.Text = "" Then
        'MsgBox("Favor verificar se todos os campos do Responsável foram preenchidos.", vbOKOnly, "Erro")
        'Else
        'If txtNome.Text <> "" OrElse txtDataNasc.Text <> "" OrElse txtRG.Text <> "" OrElse txtEndereco.Text <> "" OrElse txtTelefone.Text <> "" Then
        'Dim CadAluno As New SCE_ETEC_DataSetTableAdapters.AlunosTableAdapter()
        ' CadAluno.Insert(txtNome.Text, txtDataNasc.Text, txtRG.Text, txtEndereco.Text, txtTelefone.Text, Convert.ToString(cbPeriodo.SelectedItem), _
        '  Convert.ToString(cbSerie.SelectedItem), 0, 0, 0, 0, 0, _
        '   txtNomeRes.Text, txtDataNascRes.Text, txtRGRes.Text, Convert.ToString(cbEstadoCivil.SelectedItem), txtEnderecoRes.Text, txtTelRes.Text)
        ' MsgBox("Concluido.", vbOKOnly, "Aviso")
        ' Else
        ' MsgBox("Favor verificar se todos os campos do Aluno com '*' foram preenchidos.", vbOKOnly, "Erro")
        'End If
        'End If
        'Else
        'If txtNome.Text <> "" OrElse txtDataNasc.Text <> "" OrElse txtRG.Text <> "" OrElse txtEndereco.Text <> "" OrElse txtTelefone.Text <> "" Then
        'Dim CadAluno As New SCE_ETEC_DataSetTableAdapters.AlunosTableAdapter()
        'CadAluno.Insert(txtNome.Text, txtDataNasc.Text, txtRG.Text, txtEndereco.Text, txtTelefone.Text, Convert.ToString(cbPeriodo.SelectedItem), _
        'Convert.ToString(cbSerie.SelectedItem), 0, 0, 0, 0, 0, _
        'txtNomeRes.Text, txtDataNascRes.Text, txtRGRes.Text, Convert.ToString(cbEstadoCivil.SelectedItem), txtEnderecoRes.Text, txtTelRes.Text)
        'MsgBox("Concluido.", vbOKOnly, "Aviso")
        ' Else
        'MsgBox("Favor verificar se todos os campos do Aluno com '*' foram preenchidos.", vbOKOnly, "Erro")
        'End If
        'End If
        ' Catch erro As Exception
        'MsgBox(erro.Message, vbOKOnly, "Erro")
        ' End Try
    End Sub

    Private Sub LimparCampo(Optional ByVal tab As Boolean = True, Optional ByVal posicao As Integer = 0)
        Dim inicial As Integer = 0
        Dim final As Integer = 0

        For Each c As Control In Controls
            If TypeOf c Is TabControl Then

                ' Analisa as opções
                If tab = False Then
                    inicial = posicao
                    final = posicao
                    If posicao = 0 Then
                        '
                        lblStatusCPF.Visible = False
                        lblStatusCPFRes.Visible = False
                    End If
                Else
                    inicial = 0
                    final = c.Controls.Count - 1
                    '
                    lblStatusCPF.Visible = False
                    lblStatusCPFRes.Visible = False
                End If

                For i As Integer = inicial To final '0 To c.Controls.Count - 1
                    ' Limpa todos os Tab do Form
                    For Each j As Control In c.Controls(i).Controls
                        ' Vai limpar tudo que estiver no GroupBox dentro do TabControl
                        If TypeOf j Is GroupBox Then
                            For k As Integer = 0 To j.Controls.Count - 1
                                If TypeOf j.Controls(k) Is TextBox Then
                                    TryCast(j.Controls(k), TextBox).Clear()
                                    TryCast(j.Controls(k), TextBox).CharacterCasing = CharacterCasing.Upper
                                End If
                                If TypeOf j.Controls(k) Is MaskedTextBox Then
                                    TryCast(j.Controls(k), MaskedTextBox).Clear()
                                End If
                                If TypeOf j.Controls(k) Is ComboBox Then
                                    TryCast(j.Controls(k), ComboBox).SelectedIndex = 0
                                End If
                            Next
                        End If
                    Next
                Next

            End If
        Next
    End Sub

    Private Sub tsbNovo_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsbNovo.Click
        LimparCampo()
    End Sub

    Private Sub tsbLimpar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbLimpar.Click
        LimparCampo(False, tbcCadastrarAlunos.SelectedIndex)
    End Sub

    Private Sub txtDataNasc_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDataNasc.TextChanged
        Funções.calc_idade(txtDataNasc.Text)
        If Funções.status_idade = 1 Then
            gbResponsavel.Enabled = True
        Else
            gbResponsavel.Enabled = False
        End If
    End Sub

    Private Sub cmbEstado_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbEstado.SelectedIndexChanged
        cmbCidade.Items.Clear()
        cmbCidade.Text = String.Empty
        sql = "select id_cidade, cidade from tend_cidade nolock where uf='" & cmbEstado.SelectedItem.ToString() & "' ORDER BY cidade"
        SCE.Open()
        Try
            Dim cmd As New MySqlCommand(sql, SCE)
            Dim dr As MySqlDataReader = cmd.ExecuteReader()

            lista_cidades = New List(Of Cidades)()

            Do While dr.Read
                Dim lst_cidades As New Cidades()
                lst_cidades.id_cidade = dr.Item("id_cidade").ToString()
                lst_cidades.cidade = dr.Item("cidade").ToString()
                lista_cidades.Add(lst_cidades)
            Loop

            For i As Integer = 0 To lista_cidades.Count - 1
                cmbCidade.Items.Add(lista_cidades.Item(i).cidade)
            Next
        Catch ex As Exception
            MsgBox(ex.Message, vbOKOnly, "Erro")
        Finally
            SCE.Close()
            If cmbCidade.Items.Count = 0 Then
                cmbCidade.Enabled = False
                cmbBairro.Enabled = False
                cmbEndereco.Enabled = False
                cmbCidade.Text = String.Empty
                cmbBairro.Text = String.Empty
                cmbEndereco.Text = String.Empty
                txtEndCep.Text = String.Empty
                MsgBox("Não foi encontrada nenhuma informação cadastrada para este estado.", vbOKOnly, "Aviso")
            Else
                cmbCidade.Enabled = True
                cmbBairro.Enabled = False
                cmbEndereco.Enabled = False
                cmbCidade.SelectedIndex = 0
            End If

        End Try
    End Sub

    Private Sub cmbCidade_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbCidade.SelectedIndexChanged
        cmbBairro.Items.Clear()
        cmbBairro.Text = String.Empty
        sql = "select id_bairro, bairro from tend_bairro nolock where id_cidade=" & lista_cidades.Item(sender.SelectedIndex).id_cidade & " ORDER BY bairro"
        SCE.Open()
        Try
            Dim cmd As New MySqlCommand(sql, SCE)
            Dim dr As MySqlDataReader = cmd.ExecuteReader()

            lista_bairros = New List(Of Bairros)()

            Do While dr.Read
                Dim lst_bairros As New Bairros()
                lst_bairros.id_bairro = dr.Item("id_bairro").ToString()
                lst_bairros.bairro = dr.Item("bairro").ToString()
                lista_bairros.Add(lst_bairros)
            Loop

            For i As Integer = 0 To lista_bairros.Count - 1
                cmbBairro.Items.Add(lista_bairros.Item(i).bairro)
            Next
        Catch ex As Exception
            MsgBox(ex.Message, vbOKOnly, "Erro")
        Finally
            SCE.Close()
            If cmbBairro.Items.Count = 0 Then
                cmbCidade.Enabled = True
                cmbBairro.Enabled = False
                cmbEndereco.Enabled = False
                cmbBairro.Text = String.Empty
                cmbEndereco.Text = String.Empty
                txtEndCep.Text = String.Empty
                MsgBox("Não foi encontrada nenhuma informação cadastrada para esta cidade.", vbOKOnly, "Aviso")
            Else
                cmbCidade.Enabled = True
                cmbBairro.Enabled = True
                cmbEndereco.Enabled = False
                cmbBairro.SelectedIndex = 0
            End If
        End Try
    End Sub

    Private Sub cmbBairro_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBairro.SelectedIndexChanged
        cmbEndereco.Items.Clear()
        cmbEndereco.Text = String.Empty
        sql = "select cep, endereco from tend_endereco nolock where id_cidade=" & lista_cidades.Item(cmbCidade.SelectedIndex).id_cidade & " and id_bairro=" & lista_bairros.Item(sender.SelectedIndex).id_bairro & " ORDER BY endereco"
        SCE.Open()
        Try
            Dim cmd As New MySqlCommand(sql, SCE)
            Dim dr As MySqlDataReader = cmd.ExecuteReader()

            lista_enderecos = New List(Of Endereços)()

            Do While dr.Read
                Dim lst_enderecos As New Endereços()
                lst_enderecos.cep = dr.Item("cep").ToString()
                lst_enderecos.endereco = dr.Item("endereco").ToString()
                lista_enderecos.Add(lst_enderecos)
            Loop

            For i As Integer = 0 To lista_enderecos.Count - 1
                cmbEndereco.Items.Add(lista_enderecos.Item(i).endereco)
            Next
        Catch ex As Exception
            MsgBox(ex.Message, vbOKOnly, "Erro")
        Finally
            SCE.Close()
            If cmbEndereco.Items.Count = 0 Then
                cmbCidade.Enabled = True
                cmbBairro.Enabled = True
                cmbEndereco.Enabled = False
                cmbEndereco.Text = String.Empty
                txtEndCep.Text = String.Empty
                MsgBox("Não foi encontrada nenhuma informação cadastrada para este bairro.", vbOKOnly, "Aviso")
            Else
                cmbCidade.Enabled = True
                cmbBairro.Enabled = True
                cmbEndereco.Enabled = True
                cmbEndereco.SelectedIndex = 0
                txtEndCep.Text = lista_enderecos.Item(0).cep
            End If
        End Try
    End Sub

    Private Sub cmbEndereco_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbEndereco.SelectedIndexChanged
        txtEndCep.Text = String.Empty
        txtEndCep.Text = lista_enderecos.Item(sender.SelectedIndex).cep
    End Sub

    Private Sub btnPesPorCEP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPesPorCEP.Click
        sql = "select VerificarCEP('" & txtEndCep.Text.Replace("-", "") & "')"
        SCE.Open()

        Dim cmd As New MySqlCommand(sql, SCE)
        Dim dr As MySqlDataReader = cmd.ExecuteReader()
        Dim endereco() As String = {}
        Try
            Do While dr.Read
                endereco = dr.Item(0).ToString().Split("-")
            Loop
        Catch ex As Exception
            MsgBox(ex.Message, vbOKOnly, "Erro")
        Finally
            SCE.Close()
            If endereco.Length = 1 Then
                MsgBox("Não foi possivel encontrar o CEP: " & txtEndCep.Text, vbOKOnly, "Aviso")
            Else
                cmbEstado.SelectedIndex = cmbEstado.FindString(endereco(3))
                cmbCidade.SelectedIndex = cmbCidade.FindString(endereco(2))
                cmbBairro.SelectedIndex = cmbBairro.FindString(endereco(1))
                cmbEndereco.SelectedIndex = cmbEndereco.FindString(endereco(0))
            End If
        End Try
    End Sub

    Private Sub tbcCadastrarAlunos_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbcCadastrarAlunos.SelectedIndexChanged
        If sender.SelectedIndex = 2 Then
            AcceptButton = btnPesPorCEP()
        End If
    End Sub

    Private Sub txtCPF_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtCPF.Validating
        sql = "select ValidarCPF('" & txtCPF.Text.Replace(",", "").Replace("-", "").Replace(" ", "") & "')"
        SCE.Open()

        Dim cmd As New MySqlCommand(sql, SCE)
        Dim dr As MySqlDataReader = cmd.ExecuteReader()

        Do While dr.Read
            If dr.Item(0).ToString = 0 Then
                lblStatusCPF.ForeColor = Color.DarkRed
                lblStatusCPF.Text = "Inválido"
            Else
                lblStatusCPF.ForeColor = Color.DarkGreen
                lblStatusCPF.Text = "Válido"
            End If
        Loop

        lblStatusCPF.Visible = True
        SCE.Close()
    End Sub

    Private Sub txtCPFRes_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtCPFRes.Validating
        sql = "select ValidarCPF('" & txtCPFRes.Text.Replace(",", "").Replace("-", "").Replace(" ", "") & "')"
        SCE.Open()

        Dim cmd As New MySqlCommand(sql, SCE)
        Dim dr As MySqlDataReader = cmd.ExecuteReader()

        Do While dr.Read
            If dr.Item(0).ToString = 0 Then
                lblStatusCPFRes.ForeColor = Color.DarkRed
                lblStatusCPFRes.Text = "Inválido"
            Else
                lblStatusCPFRes.ForeColor = Color.DarkGreen
                lblStatusCPFRes.Text = "Válido"
            End If
        Loop

        lblStatusCPFRes.Visible = True
        SCE.Close()
    End Sub
End Class